package yxy.game.pm2.module.plainsarena;

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;

import yxy.apple.util.redisson.RedisException;
import yxy.game.pm2.bean.module.WorldModule;

public class PlainsArenaModule extends WorldModule {
	// bean===========================================================================

	private String code;// 比赛代号 判断不同的代号更新
	private boolean opening;// 开赛状态
	private int areaGroupId;

	public int getAreaGroupId() {
		return areaGroupId;
	}

	public void setAreaGroupId(int areaGroupId) {
		this.areaGroupId = areaGroupId;
	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public boolean isOpening() {
		return opening;
	}

	public void setOpening(boolean opening) {
		this.opening = opening;
	}

	// func===========================================================================

	public void update() {

	}

	public static String code(DateTime time) {
		return time.toString(DateTimeFormat.forPattern("yyyyMMdd"));
	}

	// redis==========================================================================

	static private String key(int areaGroupId) {
		return key(areaGroupId, "PLAINSARENA");
	}

	public void set() {
		try {
			setv(key(getAreaGroupId()), this);
		} catch (RedisException e) {
			e.printStackTrace();
		}
	}

	public static PlainsArenaModule get(int areaGroupId) {
		try {
			PlainsArenaModule module = getv(key(areaGroupId));
			if (module == null) {
				module = create(areaGroupId);
			}
			module.update();
			return module;
		} catch (RedisException e) {
			e.printStackTrace();
		}
		return null;
	}

	private static PlainsArenaModule create(int areaGroupId) {
		PlainsArenaModule module = new PlainsArenaModule();
		module.setAreaGroupId(areaGroupId);
		module.setCode(code(DateTime.now()));
		return module;
	}

	// lock==========================================================================

	@Override
	public String lockKey() {
		return String.format("lock:%s", key(getAreaGroupId()));
	}

}
